package com.example.springboot.mapper;

import com.example.springboot.entity.GoodsEntity;
import com.example.springboot.form.GoodsForm;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import javax.swing.*;
import java.util.List;

@Mapper
public interface GoodsMapper {

    List<GoodsEntity> queryGoodsByName(@Param("name") String name);

    List<GoodsEntity> selectAll();

    @Select("select * from goods")
    List<GoodsEntity> selectAll2();

    List<GoodsEntity> selectByNameOrDescription(@Param("name") String name,
                                                @Param("description") String description);

    List<GoodsEntity> queryGoodsWithConditions(@Param("name") String name,
                                               @Param("category") String category);

    List<GoodsEntity> queryGoodsByCategories(@Param("categories") List<String> categories);

    /**
     * 根据id来更新商品信息
     *
     * @param form 表单：新的数据
     * @return 返回更新的条目数量（0-未更新任何数据；1-更新了一条数据）
     */
    int updateGoods(GoodsForm form);

    //分析这个方法的作用
    List<GoodsEntity> queryGoodsWithMultipleConditions(@Param("name") String name,
                                                       @Param("minPrice") Double minPrice,
                                                       @Param("maxPrice") Double maxPrice,
                                                       @Param("categories") List<String> categories,
                                                       @Param("minStock") Integer minStock,
                                                       @Param("maxStock") Integer maxStock);
}
